package cn.broadsense.thrid.param;

import cn.broadsense.thrid.enums.FtsColorEnum;
import cn.broadsense.thrid.enums.FtsVehicleColorEnum;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 特征检索总数
 *
 * @author pengxin
 * @date 2022-10-11 15:00
 */
@NoArgsConstructor
@Data
public class FtsTotalsParam extends BaseParam {

    private static final long serialVersionUID = -8752521870600475599L;

    /**
     * 查询类型;0-实时,1-任务
     */
    private Integer searchType;
    /**
     * 任务编码,searchType为1时使用
     */
    private String taskRecordId;
    /**
     * 通道编码集合,searchType为0时使用
     */
    private List<String> channelId;
    /**
     * 查询开始时间;格式:yyyyMMdd'T'HHmmss'Z'
     */
    private String beginTime;
    /**
     * 查询结束时间;格式:yyyyMMdd'T'HHmmss'Z'
     */
    private String endTime;
    /**
     * 查询类型;0-人,1-非机动车,2-机动车;
     */
    private String queryType;
    /**
     * 特征
     */
    private KeyConditionParam keyCondition;


    @Override
    public void checkParam() {

    }

    @Override
    public Class getResultClass() {
        return JSONObject.class;
    }

    @NoArgsConstructor
    @Data
    public static class KeyConditionParam {
        /**
         * 非机动车和机动车属性,选填。车辆类别
         * <p>非机动车属性：2-自行车；3-摩托车；5-三轮车</p>
         * <p>机动车属性：K10客车,H10大货车,H20中货车,K33轿车,K49面包车,H30小货车,K20中客车,K32suv,K34mpv,K17公交车,H32皮卡车,K43微型车</p>
         */
        private String carCategoryA;
        /**
         * 机动车属性,选填。
         * paas识别的车牌种类:2小型汽车,1大型汽车,23警用汽车,3使馆汽车,16教练汽车,4领馆汽车。
         */
        private String plateTypeA;
        /**
         * 车标
         */
        private String carStyleName;
        /**
         * 机动车属性 摆件;0-无,1-有
         */
        private String paperCnt;
        /**
         * 机动车属性,选填。挂件;0-无,1-有;
         */
        private String dropCnt;
        /**
         * 机动车属性,选填。年检标;0-无,1-有
         */
        private String tagCnt;
        /**
         * 机动车属性,选填。遮阳板;0-无,1-有
         */
        private String sunCnt;
        /**
         * 机动车属性,选填。车身颜色集合
         * 颜色枚举{@link FtsVehicleColorEnum}
         */
        private List<String> carColor;

        /**
         * 机动车属性,选填。车牌号码
         */
        private String plateNum;
        /**
         * 人和非机动车属性，选填。性别;1-男,2-女,9-未知
         */
        private String gender;
        /**
         * 人属性，选填。是否戴帽子;0-无,1-有
         */
        private String hat;
        /**
         * 人和非机动车属性，选填。年龄段;0-孩童,1-青年,2-中年,3-老年;
         */
        private String ageType;
        /**
         * 人和非机动车属性，选填。头发类型;1-长发,2-短发,3-马尾,4-头部被遮挡,5-盘发;
         */
        private String hairType;
        /**
         * 人和非机动车属性，选填。背包;0-否,1-是
         */
        private String bag;
        /**
         * 人属性，选填。抱小孩;
         */
        private String baby;
        /**
         * 人属性，选填。是否有雨伞;0-无,1-有;
         */
        private String umbrella;
        /**
         * 人和非机动车属性，选填。上衣长度;1-长袖,2-短袖,3-无袖
         */
        private String coatLength;
        /**
         * 人和非机动车属性，选填。上衣颜色集合
         * <p>颜色参考{@link FtsColorEnum}</p>
         */
        private List<String> coatColor;

        /**
         * 裤子长度;1-长裤,2-短裤
         */
        private String trousersLen;
        /**
         * 裤子颜色 <p>颜色参考{@link FtsColorEnum}</p>
         */
        private List<String> trousersColor;

        /**
         * 包款式
         */
        private String bagStyle;
        /**
         * 脸部朝向；0-未检测到，1-正脸，2-背脸，3-侧脸。
         */
        private String faceDirect;
        /**
         * 非机动车属性，选填。是否有同行人（载人）；0-否，1-是。
         */
        private String accompanyNumber;
        /**
         * 是否戴头盔；0-否，1-是（云库CAP_STYLE=9头盔的数据）。
         */
        private String capStyle;
        /**
         * 车辆颜色 颜色枚举：{@link FtsVehicleColorEnum}
         */
        private List<String> vehicleColor;
        /**
         * 驾驶员是否系安全带；0-否，1-是。
         */
        private String lapbeltCnt;
        /**
         * 机动车属性,选填。是否打电话；0-否，1-是。
         */
        private String mobileCnt;
        /**
         * 车牌颜色
         */
        private String plateColor;
    }
}
